//生产者客户端

#include "mq_connection.hpp"

int main()
{
    //1, 实例化异步工作线程对象
    chenmq::AsyncWorker::ptr awp = std::make_shared<chenmq::AsyncWorker>();
    //2, 实例化连接对象，并向服务器发起连接。
    chenmq::Connection conn = std::make_shared<chenmq::Connection>("127.0.0.1", 8080, awp); //
    //3, 通过连接创建信道
    chenmq::Channel::ptr channel = conn->openChannel();
    //4, 通过信道提供的服务完成所需
    //   1,声明一个交换机exchange1--类型为广播交换
    google::protobuf::Map<std::string, std::string> tmp_map;
    channel->declareExchange("exchange1", chenmq::ExchangeType::FANOUT, true, false, tmp_map); 
    //   2,声明一个队列queue1
    channel->declareQueue("queue1", true, false, false, tmp_map);
    //   3,声明一个队列queue2
    channel->declareQueue("queue2", true, false, false, tmp_map);
    //   4,绑定queue1-exchange1, 且binding_key设置为queue1
    channel->queueBind("exchange1", "queue1", "queue1");
    //   5,绑定queue2-exchange1, 且binding_key设置为news.music.#
    channel->queueBind("exchange1", "queue2", "news.music.#");
    //5，循环向交换机发布消息
    for(int i = 0; i < 10; i++)
    {
        channel->basicPublish("exchange1", nullptr, "hello world-" + std::to_string(i));
    }
    //6,关闭信道
    conn->closeChannel(channel);
    //7,关闭连接
    
    return 0;
}

